Compactando / descompactando arquivos simultaneamente [Melhorado]
Publicado por Sandro Marcell 18/07/2007
[ Hits: 6.650 ]
Homepage: http://sanmarcell.wordpress.com
Este script compacta/descompacta arquivos simultaneamente, sem necessidade de parâmetros extras.
Ex.: nome_script arq.txt arq.pdf arq.gz arq.tar.gz
Os arquivos arq.txt e arq.pdf serão compactados; já os arquivs arq.gz e arq.tar.gz serão descompactados.
Está é a versão Shell Bash de um script Tcl que postei aqui no VOL.
Falou!!!
#!/bin/bash
#
# Compacte/descompacte arquivos simultaneamente.
# (Versão Shell Bash)
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: nome_script arquivo1 [arquivoN]
#
# Obs.:
# É possível o uso do metacaractere (*)
# São necessários os programas: tar, gzip e bzip2
# Realçando saída do comando 'echo':
Echo () { echo -e "\e[1m$*\e[m" ; }
# Checando parâmetros:
[ -z $BASH_ARGC ] && Echo "Uso: $(basename $0) arquivo1 [arquivoN]" && exit
# Simples avisos:
Aguarde () { Echo "Descompactando..." ; sleep 1 ; }
Aguarde2 () { Echo "Compactando..." ; sleep 1 ; }
# Arquivo de log:
LOG=/tmp/$(basename $0)-$USER.log
# Função que testa código de retorno:
Testando () {
[ $? == 0 ] && Echo "Arquivo descompactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
# Início do loop:
for A ; do
# Testes condicionais:
[ ! -e $A ] && Echo "-> Arquivo não encontrado." && continue
[ ! -O $A ] && Echo "-> Acesso negado." && continue
# Compactar ou descompactar?
case $A in
# Descompactando...
*.tar.gz | *.tgz)
Aguarde
tar -zxf $A 2>> $LOG
Testando $?
;;
*.gz)
Aguarde
gunzip $A 2>> $LOG
Testando $?
;;
*.tar.bz2 | *.tbz)
Aguarde
tar -jxf $A 2>> $LOG
Testando $?
;;
*.bz2)
Aguarde
bunzip2 $A 2>> $LOG
Testando $?
;;
*)
# Compactando...
[ -d $A ] && {
Aguarde2
tar -czf $A.tar.gz $A 2>> $LOG
[ $? == 0 ] && Echo "Diretório compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
} || {
Aguarde2
gzip -f9 $A 2>> $LOG
[ $? == 0 ] && Echo "Arquivo compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
;;
esac
done
#Fim
Front-end tosco para Xmame (kdialog)
Iptables com nat, prioridade de pacotes e bloqueio de portas
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









